====== Présentation ======
===== Origine =====

**inron** est le diminutif de **in**otify  **cron**tab qui est le diminutif de **c**h**ro**no **tab**le qui signifie table de planification.

[[https://fr.wikipedia.org/wiki/Inotify|inotify]] est un mécanisme du [[https://fr.wikipedia.org/wiki/Noyau_Linux|noyau Linux]] qui fournit des notifications concernant le système de fichiers.

===== Description =====

Ainsi, **incron** est un outil qui exécute des actions selon des événements du système de fichiers.

Il est composé de :
  * **incrond** : un démon (un service qui tourne en tache de fond)
  * **incrontab** : configurer les actions en ligne de commande
  * **/etc/incron.conf** : le fichier de configuration principal 
  * **/etc/incron.d/** : répertoire contenant la définition de fichiers/de répertoires à monitorer
  * **/etc/incron.{allow,deny}** (optionnel) : fichier définissant les utilisateurs autorisés à utiliser l’outil


Fonctionnement : le fonctionnement est proche de cron :
  * le démon **incrond** scanne les fichiers **/etc/incron.d/** pour savoir quoi faire en fonction des evenements du systeme

====== Installation ======
[[:tutoriel:comment_installer_un_paquet|Installer un paquet]] [[apt://incron|incron]]

====== Configuration ======
L'utilisation est proche de cron.

===== Gérer les autorisations de l'utilisation de incron =====

Si le fichier **/etc/incron.allow** existe, alors seuls les utilisateurs qui sont dans ce fichier ont le droit d'utiliser incron. Ainsi, il vous faut soit :
  * Effacer le fichier <code>sudo rm -f  /etc/incron.allow</code>
  * Ajouter l'utilisateur courant (ou ceux voulus) <code>echo $USER | sudo tee /etc/incron.allow</code>

===== Configurer les dossiers et les actions à effectuer =====
Lancer **incrontab** pour assigner des actions en fonction des fichiers/dossiers paramétrés :
<code>incrontab -e</code> 

Le format de saisie de incrontab est :

**<chemin> <type d'événement> <commande à exécuter>**

//Exemple// :
/home/MonUser/download IN_CLOSE_WRITE /home/td/incron-script.sh


**Liste des types d'événements** :
^ type d'événement  ^ Signification ^
| IN_ACCESS | File was accessed (read) |
| IN_ATTRIB | Metadata changed (permissions, timestamps, extended attributes, etc.) |
| IN_CLOSE_WRITE | File opened for writing was closed. on attend que le fichier soit cloturé, dans notre cas, que le téléchargement SOIT TERMINE avant de déclencher la commande ou le script |
| IN_CLOSE_NOWRITE | File not opened for writing was closed |
| IN_CREATE | File/directory created in watched directory. **Attention** : la commande est déclenchée lorsque le fichier est créé MAIS pas "terminé". Dans le cas d'un téléchargement qui dure 2 mn dans notre répertoire "download", la commande se déclencherait dès la création du fichier SANS ATTENDRE LA FIN DU TELECHARGEMENT. L'operation de déplacement échouerait. |
| IN_DELETE | File/directory deleted from watched directory |
| IN_DELETE_SELF | Watched file/directory was itself deleted |
| IN_MODIFY | File was modified |
| IN_MOVE_SELF | Watched file/directory was itself moved |
| IN_MOVED_FROM | File moved out of watched directory |
| IN_MOVED_TO | File moved into watched directory |
| IN_OPEN | File was opened |


Pour utiliser contextuellement les fichiers/dossiers, des "Wildcard" sont disponibles :

^ Wildcard  ^ Signification ^
| $$ | dollar sign |
| $@ | watched filesystem path (see above) |
| $# | event-related file name |
| $% | event flags (textually) |
| $& | event flags (numerically) |


====== Liens ======
Merci infiniement pour ces 2 liens qui ont servi d'inspiration pour cette page :
  * [[http://www.admin-linux.fr/?p=4840|Une description interessante sur admin-linux.fr]]
  * [[http://dmesg.fr/categorie-logiciels/75-incron-executer-des-actions-selon-des-evenements-du-systeme-de-fichiers|Une autre description interessante sur dmesg.fr]]
